package gest;

import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class Especialidade_Impl extends UnicastRemoteObject implements Especialidade{
	
	private String nome = null;
	private int id;
	public static Connection conn;
	
	public Especialidade_Impl(String nome) throws RemoteException{
		this.nome=nome;
		Statement st;
		ResultSet rs;
		if (conn == null)
			conn = DBConnection.get_conn();
		try {
			st = conn.createStatement();
			String query = "select idEsp from especialidades where nome='"+this.nome+"'";
			rs = st.executeQuery(query);
			if (rs.first()) {
				this.id = rs.getInt(1);
			} else {
				st.execute("insert into especialidades (nome) values ('" + nome
						+ "')", st.RETURN_GENERATED_KEYS);
				rs = st.getGeneratedKeys();
				rs.first();
				this.id = rs.getInt(1);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	
	public String get_nome() throws RemoteException {
		return this.nome;
	}

	public boolean set_nome(String nome) throws RemoteException {
		if(!this.nome.equals(nome)){
			if (update_field("nome", nome)){
				this.nome = nome;
			}
		}
		return true;
	}

	private boolean update_field(String field, Object Value) {
		Statement st;
		try {
			if (conn == null)
				conn = DBConnection.get_conn();
			st = conn.createStatement();
			String query = "update especialidades set " + field + "='"
					+ Value.toString() + "' where nome='"+this.nome+"'";
			st.execute(query);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return true;
	}

	public int get_id() throws RemoteException {
		return id;
	}

}
